package com.wang.jmonkey.modules.system.api;

import com.wang.jmonkey.common.annotation.Log;
import com.wang.jmonkey.common.result.HttpResult;
import com.wang.jmonkey.modules.system.model.dto.SystemButtonDto;
import com.wang.jmonkey.modules.system.model.enums.SystemResourceTypeEnum;
import com.wang.jmonkey.modules.system.model.param.SystemButtonParam;
import com.wang.jmonkey.modules.system.service.SystemButtonService;
import com.wang.jmonkey.modules.system.service.SystemResourceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 按钮及访问权限配置信息表(SystemButton)表控制层
 *
 * @author HeJiawang
 * @since 2021-05-21 21:44:20
 */
@RestController
@RequestMapping("/button")
public class SystemButtonApi {

    /**
     * 服务对象
     */
    @Autowired
    private SystemButtonService service;

    @Autowired
    private SystemResourceService systemResourceService;

    /**
     * 获取按钮权限数据
     * @param parentId 父级id，指向system_resource.parent_id
     * @return 按钮权限数据
     */
    @Log("按钮及访问权限管理——列表查看")
    @GetMapping("/list/{parentId}")
    public HttpResult<List<SystemButtonDto>> list(@PathVariable Long parentId) {
        return new HttpResult<>(service.list(parentId));
    }

    /**
     * 新增按钮及访问权限
     * @param button 按钮及访问权限信息
     * @return true 新增成功
     */
    @Log("按钮及访问权限管理——新增")
    @PostMapping("/save")
    public HttpResult<Void> save(@RequestBody SystemButtonParam button) {
        return new HttpResult<Void>().setSuccess(service.save(button));
    }

    /**
     * 修改按钮及访问权限
     * @param button 按钮及访问权限信息
     * @return true 修改成功
     */
    @Log("按钮及访问权限管理——修改")
    @PutMapping("/update")
    public HttpResult<Void> update(@RequestBody SystemButtonParam button) {
        return new HttpResult<Void>().setSuccess(service.updateById(button));
    }

    /**
     * 删除按钮及访问权限
     * @param id 按钮及访问权限id
     * @return true 删除成功
     */
    @Log("按钮及访问权限管理——删除")
    @DeleteMapping("/remove/{id}")
    public HttpResult<Void> remove(@PathVariable Long id) {
        return new HttpResult<Void>()
                .setSuccess(systemResourceService.removeByResourceId(SystemResourceTypeEnum.Button, id));
    }
}
